package io.gitee.chearnee.fw.common.utils;

import lombok.experimental.UtilityClass;

import java.time.temporal.Temporal;
import java.util.Date;

/**
 * @author cn
 * @version 1.0
 * @description
 * @date 2023/7/24 14:15
 */
@UtilityClass
public class ClassUtil {
    /**
     * 判断一个class否是一个entity
     *
     * @param type
     * @return
     */
    public static boolean isEntity(Class<?> type) {
        if (type.isArray()) {
            return false;
        }
        if (type.isPrimitive()) {
            return false;
        }
        if (type.isEnum()) {
            return false;
        }
        if (type.isAnnotation()) {
            return false;
        }
        if (Boolean.class.isAssignableFrom(type)) {
            return false;
        }
        if (Date.class.isAssignableFrom(type)) {
            return false;
        }
        if (Temporal.class.isAssignableFrom(type)) {
            return false;
        }
        if (Iterable.class.isAssignableFrom(type)) {
            return false;
        }
        if (CharSequence.class.isAssignableFrom(type)) {
            return false;
        }
        return !Number.class.isAssignableFrom(type);
    }

    /**
     * class是可迭代的
     *
     * @param cls
     * @return
     */
    public static boolean isIterable(Class<?> cls) {
        if (cls.isArray()) {
            return true;
        }
        return Iterable.class.isAssignableFrom(cls);
    }
}
